package com.lfz.demo.common.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public enum CensusTimeEnum {
    FIRST(1, "第一次全国人口普查"),
    SECOND(2, "第二次全国人口普查"),
    THIRD(3, "第三次全国人口普查"),
    FOURTH(4, "第四次全国人口普查"),
    FIFTH(5, "第五次全国人口普查"),
    SIXTH(6, "第六次全国人口普查"),
    SEVENTH(7, "第七次全国人口普查");

    private final Integer code;
    private final String desc;

    // 根据code获取枚举
    public static CensusTimeEnum getByCode(Integer code) {
        for (CensusTimeEnum value : CensusTimeEnum.values()) {
            if (value.getCode().equals(code)) {
                return value;
            }
        }
        return null;
    }

    // 根据desc获取枚举
    public static CensusTimeEnum fromDesc(String desc) {
        for (CensusTimeEnum e : CensusTimeEnum.values()) {
            if (e.desc.equals(desc)) {
                return e;
            }
        }
        throw new IllegalArgumentException("无效的普查时间标签：" + desc);
    }

    /**
     * 通过 code 获取对应的 desc
     * @param code 描述信息
     * @return 对应的 code，如果未找到则返回 null
     */
    public static String getDescByCode(Integer code) {
        for (CensusTimeEnum value : CensusTimeEnum.values()) {
            if (value.getCode().equals(code)) {
                return value.getDesc();
            }
        }
        return null;
    }

    /**
     * 通过 desc 获取对应的 code
     * @param desc 描述信息
     * @return 对应的 code，如果未找到则返回 null
     */
    public static Integer getCodeByDesc(String desc) {
        for (CensusTimeEnum value : CensusTimeEnum.values()) {
            if (value.getDesc().equals(desc)) {
                return value.getCode();
            }
        }
        return null;
    }

    /**
     * 通过 desc 获取对应的 desc （用于确认）
     * @param desc 描述信息
     * @return 对应的 desc，如果未找到则返回 null
     */
    public static String getDescByDesc(String desc) {
        for (CensusTimeEnum value : CensusTimeEnum.values()) {
            if (value.getDesc().equals(desc)) {
                return value.getDesc();
            }
        }
        return null;
    }
}